//package com.woniuxy.wzq;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.ObjectInputStream;
//import java.io.ObjectOutputStream;
//import java.util.ArrayList;
//import java.util.Optional;
//import java.util.function.Predicate;
//
//import javafx.application.Application;
//import javafx.event.ActionEvent;
//import javafx.event.EventHandler;
//import javafx.scene.Node;
//import javafx.scene.Scene;
//import javafx.scene.control.Alert;
//import javafx.scene.control.Alert.AlertType;
//import javafx.scene.control.Button;
//import javafx.scene.control.ButtonType;
//import javafx.scene.control.ChoiceDialog;
//import javafx.scene.input.MouseEvent;
//import javafx.scene.layout.Background;
//import javafx.scene.layout.BackgroundFill;
//import javafx.scene.layout.Pane;
//import javafx.scene.paint.Color;
//import javafx.scene.shape.Circle;
//import javafx.scene.shape.Line;
//import javafx.stage.Stage;
//
//public class Util extends Application {
//
//	int color = 0;// Ĭ�ϳ�ʼ��ɫ ��ɫ
//	ArrayList<Chesses> ac = new ArrayList<Chesses>();
//	int num0 = 0;// ����������
//	int num1 = 0;// ����������
//	int reDown = 0;// �Ƿ���Ի���
//	
//	boolean win = true;//Ĭ��û�зֳ�ʤ��
//	File parentFile = new File("F:\\files\\һ�׶�\\class66\\Chesses");
//
//	@Override
//	public void start(Stage primaryStage) throws Exception {
//		// TODO Auto-generated method stub
//
//		// 1.�����ϵĿؼ� ���ڻ�����
//		Pane pane = new Pane(); // �����������
//
//		for (int i = 20; i < 600; i += 40) {
//			Line l1 = new Line(20, i, 580, i);
//			pane.getChildren().add(l1);
//			Line l2 = new Line(i, 20, i, 580);
//			pane.getChildren().add(l2);
//		}
//
//		// ���û�����ɫ
//		Background bg = new Background(new BackgroundFill(Color.BISQUE, null, null));
//		pane.setBackground(bg);
//
//		// ��Ӱ�ť
//		Button button1 = new Button("�¾�");
//		button1.setPrefSize(80, 40);// ���尴ť���
//		button1.setLayoutX(20);
//		button1.setLayoutY(600);
//		pane.getChildren().add(button1);
//
//		Button button2 = new Button("����");
//		button2.setPrefSize(80, 40);// ���尴ť���
//		button2.setLayoutX(140);
//		button2.setLayoutY(600);
//		pane.getChildren().add(button2);
//
//		Button button3 = new Button("��������");
//		button3.setPrefSize(80, 40);// ���尴ť���
//		button3.setLayoutX(260);
//		button3.setLayoutY(600);
//		pane.getChildren().add(button3);
//
//		Button button4 = new Button("����");
//		button4.setPrefSize(80, 40);// ���尴ť���
//		button4.setLayoutX(380);
//		button4.setLayoutY(600);
//		pane.getChildren().add(button4);
//
//		Button button5 = new Button("�˳�");
//		button5.setPrefSize(80, 40);// ���尴ť���
//		button5.setLayoutX(500);
//		button5.setLayoutY(600);
//		pane.getChildren().add(button5);
//
//		// 2.�������ڳ��������� �����������ô�С 15
//		Scene scene = new Scene(pane, 590, 650);
//
//		// 3.�����������
//		primaryStage.setScene(scene);
//
//		// �Ƿ�������ק�����С
//		primaryStage.setResizable(false);
//
//		// 4.չʾ����
//		primaryStage.show();
//		
//		//�����¾�
//		button1.setOnAction(new EventHandler<ActionEvent>() {
//
//			@Override
//			public void handle(ActionEvent event) {
//				// TODO Auto-generated method stub
//				//��ʾ�Ƿ����¾� ��ʾ�ȱ���
//				
//				//�������
//				//��ռ���
//				//����ȫ�ֱ��� ��ʼ��  Ĭ������ �������
//			}
//			
//		});
//		
//		//�������
//		button2.setOnAction(new EventHandler<ActionEvent>() {
//
//			@Override
//			public void handle(ActionEvent event) {
//				// TODO Auto-generated method stub
//				if(win) {
//					if (ac.size() == 0) {
//						Alert alert = new Alert(AlertType.WARNING);
//						alert.setTitle("���徯��");
//						alert.setHeaderText("�����쳣");
//						alert.setContentText("��δ���� ����ʧ��");
//						alert.show();
//					} else {
//
//						if (reDown >= 2) {
//							if (color == 0 ? num0 < 3 : num1 < 3) {
//								if (color == 0) {
//									num0++;
//								} else {
//									num1++;
//								}
//								// �Ƴ������һ������
//								ac.remove(ac.size() - 1);
//								//�����ϵ�ǰ����ɾ��
//								pane.getChildren().remove(pane.getChildren().size()-1);
//								
//								color = color == 0 ? 1 : 0;// ��ɫ��Ϊ�����һ��
//								reDown = 0;// һ������ɹ� ���Ӵ�����0
//								
//							} else {
//								Alert alert = new Alert(AlertType.WARNING);
//								alert.setTitle("���徯��");
//								alert.setHeaderText("�����쳣");
//								alert.setContentText("�������������");
//								alert.show();
//							}
//
//						} else {
//							Alert alert = new Alert(AlertType.WARNING);
//							alert.setTitle("���徯��");
//							alert.setHeaderText("�����쳣");
//							alert.setContentText("������������");
//							alert.show();
//						}
//					}
//				}else {
//					Alert alert = new Alert(AlertType.WARNING);
//					alert.setTitle("���徯��");
//					alert.setHeaderText("�����쳣");
//					alert.setContentText("ʤ���ѷ� ���ɻ���");
//					alert.show();
//				}
//				
//			}
//			
//		});
//		
//		//��������
//		button3.setOnAction(new EventHandler<ActionEvent>() {
//
//			@Override
//			public void handle(ActionEvent event) {
//				// TODO Auto-generated method stub
//				
//				int id = getNames()+1;
//				File realFile = new File(parentFile,"Chesses_"+id+".txt");
//				try {
//					ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(realFile));
//					oos.writeObject(ac);
//					Alert alert = new Alert(AlertType.WARNING);
//					alert.setTitle("������ʾ");
//					alert.setHeaderText("��������");
//					alert.setContentText("���ױ�����"+realFile.getPath());
//					alert.show();
//					
//				} catch (IOException e) {
//					// TODO Auto-generated catch block
//					e.printStackTrace();
//				}
//				
//			}
//			
//		});
//
//		//���ײ���
//		button4.setOnAction(new EventHandler<ActionEvent>() {
//			
//			@Override
//			public void handle(ActionEvent event) {
//				// TODO Auto-generated method stub
//				
//				Alert alert = new Alert(AlertType.CONFIRMATION);
//				alert.setTitle("���׾���");
//				alert.setHeaderText("�Ƿ�ȷ�ϴ���");
//				alert.setContentText("���׻Ὣ��������ɾ�� �Ƿ�ֱ�Ӵ���");
//				Optional<ButtonType> answer = alert.showAndWait();
//				if(answer.get()==ButtonType.OK) {
//					//�������
//					pane.getChildren().removeIf(new Predicate<Node>() {
//
//						@Override
//						public boolean test(Node t) {
//							// TODO Auto-generated method stub
//							return t instanceof Circle;
//						}
//						
//					});
//					ac = new ArrayList<Chesses>();
//					
//					//�����µ���ʾ�� ���û�ѡ��Ҫ���׵�����
//					ArrayList<String> as = getChessName();
//					ChoiceDialog<String> cs = new ChoiceDialog<String>(as.get(0),as);
//					cs.setTitle("������ʾ");
//					cs.setHeaderText("��ѡ��Ҫ���׵��ױ�");
//					cs.setContentText("��ѡ����ױ��ǣ�");
//					Optional<String> os = cs.showAndWait();
//					String str = os.get();
//					File realFile = new File(parentFile,str);
//					try {
//						ObjectInputStream ois = new ObjectInputStream(new FileInputStream(realFile));
//						ac = (ArrayList<Chesses>)ois.readObject();
//					} catch (IOException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					} catch (ClassNotFoundException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//					
//					//�����״���������
//					for(Chesses c : ac) {
//						Circle cc = new Circle(c.x,c.y,20,c.color==0?Color.BLACK:Color.WHITE);
//						pane.getChildren().add(cc);
//					}
//				}
//				
//			}
//			
//		});
//		
//		
//		
//		// �������¼�
//		pane.setOnMouseClicked(new EventHandler<MouseEvent>() {
//
//			@Override // ����������ǵ����ص���Ϣ
//			public void handle(MouseEvent event) {
//				// TODO Auto-generated method stub
//				
//				if(!win) {
//					Alert alert = new Alert(AlertType.WARNING);
//					alert.setTitle("���Ӿ���");
//					alert.setHeaderText("�����쳣");
//					alert.setContentText("ʤ���ѷ� ��������");
//					alert.show();
//					return;
//				}
//				int x = (int) event.getX();
//				int y = (int) event.getY();
//
//				if (x <= 600 && y <= 600) {
//					for (int i = 40; i <= 600; i += 40) {
//						if (i > x) {
//							x = i - 20;
//							break;
//						}
//					}
//					for (int i = 40; i <= 600; i += 40) {
//						if (i > y) {
//							y = i - 20;
//							break;
//						}
//					}
//
//					boolean bool = true;
//					// �жϼ������Ƿ��������ڸ�����
//					for (Chesses cs : ac) {
//						if (cs.x == x && cs.y == y) {
//							// ʹ����ʾ�� ���� ��������
//							Alert alert = new Alert(AlertType.WARNING);
//							alert.setTitle("���Ӿ���");
//							alert.setHeaderText("�����쳣");
//							alert.setContentText("�����ظ�����");
//							alert.show();
//							bool = false;
//						}
//					}
//
//					if (bool) {
//						Circle c = new Circle(x, y, 20, color == 0 ? Color.BLACK : Color.WHITE);
//						pane.getChildren().add(c);
//						Chesses ch = new Chesses(x, y, color);
//						ac.add(ch);
//						reDown++;//ͳ���Ƿ���Ի���
//
//						// �ж�ʤ��
//						boolean isWin = isWin(ch);
//						if (isWin) {
//							win = false;//Ӯ����
//							Alert alert = new Alert(AlertType.WARNING);
//							alert.setTitle("ʤ����ʾ");
//							alert.setHeaderText("ʤ���ѷ�");
//							alert.setContentText(color == 0 ? "���ӻ�ʤ" : "���ֻ�ʤ");
//							alert.show();
//							
//						}
//						color = color == 1 ? 0 : 1;
//					}
//
//				} else {
//					// ʹ����ʾ�� ���� ��������
//					Alert alert = new Alert(AlertType.WARNING);
//					alert.setTitle("���Ӿ���");
//					alert.setHeaderText("�����쳣");
//					alert.setContentText("�������̽��޲�������");
//					alert.show();
//				}
//
//			}
//		});
//
//	}
//	
//	public boolean isWin(Chesses c) {
//		// TODO Auto-generated method stub
//		
//		int count = 1;//��¼ĳ�������ͬ��ɫ����һ�������
//		//�����
//		for(int x = c.x-40;x>=0;x-=40) {
//			boolean bool = true;
//			for(Chesses cs:ac) {
//				if(cs.x==x&&cs.y==c.y&&cs.color==c.color) {
//					count++;
//					bool = false;
//					break;
//				}
//			}
//			if(bool) {
//				break;
//			}
//		}
//		//�Һ���
//		for(int x = c.x+40;x<=340;x+=40) {
//			boolean bool = true;
//			for(Chesses cs:ac) {
//				if(cs.x==x&&cs.y==c.y&&cs.color==c.color) {
//					count++;
//					bool = false;
//					break;
//				}
//			}
//			if(bool) {
//				break;
//			}
//		}
//		if(count>=5) {
//			return true;//Ӯ��
//		}
//		
//		
//		//����
//		count = 1;
//		//����
//		//����
//		
//		//��б��
//		count = 1;
//		//��б��
//		for(int x = c.x-40,y=c.y-40;x>=20&&y>=20;x-=40,y-=40) {
//			boolean bool = true;
//			for(Chesses cs:ac) {
//				if(cs.x==x&&cs.y==y&&cs.color==c.color) {
//					count++;
//					bool = false;
//					break;
//				}
//			}
//			if(bool) {
//				break;
//			}
//		}
//		//��б��
//		for(int x = c.x+40,y=c.y+40;x<=340&&y<=340;x+=40,y+=40) {
//			boolean bool = true;
//			for(Chesses cs:ac) {
//				if(cs.x==x&&cs.y==y&&cs.color==c.color) {
//					count++;
//					bool = false;
//					break;
//				}
//			}
//			if(bool) {
//				break;
//			}
//		}
//		
//		if(count>=5) {
//			return true;
//		}
//		
//		//��б��
//		count = 1;
//		//��б��
//		//��б��
//		
//		return false;
//	}
//
//	public int getNames() {
//		int id = 0;
//		File[] listFiles = parentFile.listFiles();
//		for(File f : listFiles) {
//			if(f.isFile()) {
//				String name = f.getName();
//				int i = Integer.parseInt(name.substring(name.indexOf("_")+1, name.indexOf(".")));
//				id = i>id?i:id;
//			}
//		}
//		//id����Ŀǰ������к�
//		return id;
//	}
//	
//	public ArrayList<String> getChessName() {
//		//�ļ����� ������ �����������±� ��������ΪChesses_xxx.txt���ļ���
//		
//		ArrayList<String> as = new ArrayList<String>();
//		File[] lfs = parentFile.listFiles();
//		for(File f : lfs) {
//			if(f.isFile()) {
//				String name = f.getName();
//				if(name.startsWith("Chesses_")&&name.endsWith(".txt")) {
//					as.add(name);
//				}
//			}
//		}
//		return as;
//	}
//}
